package create.single;

/**
 * @AUTHOR LYF
 * @DATE 2022/3/12
 * @VERSION 1.0
 * @DESC
 */
public class UnsafeLazySingleton {
    private static UnsafeLazySingleton instance = null;
    private UnsafeLazySingleton(){}

    /* 为什么会不安全？
      多线程访问时-同时进入并判断为空，那么将会重复创建导致并不唯一
      ->想办法保证不能同时进入->
      加syn..锁-保证不能同时调用该方法实例---
      考虑如何加锁--锁的上锁与释放重点关注理解
      （1）锁住代码块---即锁该对象
      （2）锁非静态方法则是锁住该类的对象
      （3）锁静态方法则是锁住该类.class

      粗暴的加锁-直接加在方法上，效率较低

     */
    UnsafeLazySingleton getInstance(){
        if(instance==null)
            instance = new UnsafeLazySingleton();
        return instance;
    }
}
